package com.atguigu.mybatis.v2;


import com.atguigu.mybatis.v2.mapper.Blog;
import com.atguigu.mybatis.v2.mapper.BlogMapper;
import com.atguigu.mybatis.v2.session.*;


/**
 * @Author: qingshan
 *
 *
 * 这个demo主要拿来熟悉myabtis源码里重要的几个类和之间的关系。
 *          网上有人说通过factorybean把mapper的代理类放到ioc容器里去，那是mybatis和spring的整合源码。  不属于这个范围
 */
public class TestMybatis {

    public static void main(String[] args) {
        //这里就是new一个SqlSessionFactory
        SqlSessionFactory factory = new SqlSessionFactory();
        // build就是初始化Configuration，opensqlsession就是拿着configure去new一个default的sqlsession，仅此而已
        //new sqlsession的时候有生成里一个executor。 执行器里又有三个handler各司其职
        DefaultSqlSession sqlSession = factory.build().openSqlSession();
        //这是有点绕的一步，之前有点没搞清。  这个简易版的可以写入简历里去。
        // 获取MapperProxy代理，为什么最终是 MapperProxyFactory 去newInstance ？  因为你生成代理对象进到invoke方法的时候要把BLog对象传进去啊，因为你要给BLog填充值啊。
        BlogMapper mapper = sqlSession.getMapper(BlogMapper.class);
        Blog blog = mapper.selectBlogById(1);

        System.out.println("第一次查询: " + blog);
        System.out.println();
        blog = mapper.selectBlogById(1);
        System.out.println("第二次查询: " + blog);
    }
}
